#Notes UI
標記為 #Notes UI · 7 篇文章
- @Prompt 與 @PickList:用 Formula 跳對話框問使用者(只在 client、上不了 web)
想讓按鈕跳一句「確定要刪嗎?」,或讓使用者從一個 view 裡挑客戶——在 Formula 裡就是 @Prompt 與 @PickList。@Prompt 有一整排樣式(Ok/YesNo/OkCancelList/Password/LocalBrowse…),@PickList 則彈一個 modal 讓你從指定 view 選文件、回傳某欄的值,或從名錄挑人。但同一段公式放到 web、或放進排程 agent,就會默默無效——官方明講「You cannot use this function in Web applications」。這篇整理兩者的樣式與回傳、client-only 的邊界,以及該用哪個。
2026.10.02 - @Command vs @PostedCommand:為什麼你的公式沒照順序跑
你在按鈕公式裡先算欄位、再叫一個 @Command 執行 UI 動作,結果動作先跑、算式後跑,順序全亂。原因是:@Command 大致照你寫的順序跑,但 @PostedCommand 一律排到「所有 @function 都跑完」之後才執行——寫在最前面的 @PostedCommand 反而最後動。更坑的是,有些 @Command 本身就被延後(行為像 @PostedCommand)。這篇用官方的執行順序規則講清楚兩者差別、哪些 @Command 天生 deferred,以及什麼時候該用哪個。
2026.09.29 - NotesUIScheduler:用 LotusScript 驅動內嵌的 free/busy 排程格
一張自訂的會議室預約或會議表單上有內嵌排程控制項 —— 那個你放進與會者、看大家 free/busy 的忙碌時間格。NotesUIScheduler 就是你用程式驅動那個控制項的方式:從 UI 文件用名稱取得它、加或移除與會者、刷新排程資料、讀回使用者選的時段。一篇關於唯一那個前端排程類別的實測報告 —— 它的 GetScheduleData 刷新、以及你會掛的兩個事件。
2026.08.02 - Button、Field、Navigator:三個沒有屬性、沒有方法的 LotusScript 類別
打開 Button 的 LotusScript 說明,你以為會有屬性和方法 —— 一個都沒有。Field 一樣、Navigator 也一樣。三個都是故意做空的:它們只作為事件的進入點存在,也就是那個「告訴前端事件 handler 是誰觸發了它」的具名 Source 參數。一篇關於「你永遠不會對它呼叫任何東西」的三個類別的實測報告 —— 它們的事件是什麼(Click、Entering/Exiting/OnChange),以及為什麼真正的工作永遠是透過 NotesUIDocument。
2026.08.01 - NotesUIDatabase:攔下一個刪除的唯一地方
在 Notes client 裡,使用者可以從任何 view、用 Delete 鍵、用剪下、或拖進垃圾桶刪掉一份文件 —— 你沒辦法一條路一條路去守。NotesUIDatabase 是看得見全部路徑的單一 chokepoint:它的 QueryDocumentDelete 事件在任何東西被標記刪除之前,整個資料庫觸發一次。一篇前端資料庫類別的實測報告 —— 通往後端的 Database 橋、刪除/封存事件,以及你掛在「那個攔得住每條路的事件」上的軟刪除守衛。
2026.07.28 - NotesUIView:唯一知道使用者選了什麼的類別
view 上的動作按鈕理應對使用者反白的那幾列作用 —— 但後端的 NotesView 根本沒有「選取」這個概念。那道缺口,正是 NotesUIView 填的。一篇前端 view 類別的實測報告:它的 Documents 屬性(活的選取狀態)、通往後端 View 的橋、你用來攔截使用者的 QueryOpenDocument/QueryClose 事件,以及那條把這一切擋在 web 與 agent 之外的硬邊界。
2026.07.26 - NotesUIWorkspace × NotesUIDocument:LotusScript 的前端自動化
站上前面拆過的 NotesDatabase、NotesDocument 都是後端類別 — 但當你要在使用者按下按鈕的當下、讀他「螢幕上還沒存檔」的欄位值、跳一個對話框問他、或把當前文件切到編輯模式,靠的是另一半:NotesUIWorkspace 與 NotesUIDocument。本文拆解這組前端雙人組、最關鍵的「前端值 vs 後端 Document」觀念、FieldGetText/FieldSetText、Prompt 與 PickList 對話框,以及一個最容易忘的鐵則:UI class 不能在背景 / 排程 agent 裡跑。
2026.06.10